/********************************************************************************************
*            Copyright (c) 2013. All Rights Reserved.
*
*
* 文件名称:   agnss_task.h
* 描    述:	  AGNSS 头文件
* 当前版本:   V1.0
* 日    期:   2021/06/02
* 创 建 人:   杨小珛
* 
*********************************************************************************************/
#ifndef AGNSS_TASK_H
#define AGNSS_TASK_H

/* FreeRTOS Kernel includes. */
#include "os_app.h"
#if( OS_GNSS_MODULE_TYPE == 1 )     /*中科微AGPS 地址*/
#define AGNSS_TAIDOU_HOST           "www.gnss-aide.com"
#define AGNSS_TAIDOU_PORT           2621
//#define AGNSS_TAIDOU_SEND_DATA      "user=timeus2018@126.com;pwd=smartgaga001;cmd=full;gnss=gps+bd;lat=30.5;lon=120.5;alt=0;pacc=1000;"
#define AGNSS_TAIDOU_SEND_DATA      "user=timeus2018@126.com;pwd=smartgaga001;"
                                       //user=timeus2018@126.com;pwd=smartgaga001;cmd=full;gnss=gps+bd;lat=30.5;lon=120.5;
#else                               /*泰斗模块AGPS 地址*/
#define AGNSS_TAIDOU_HOST           "agnss.techtotop.com"
#define AGNSS_TAIDOU_PORT            9999
#define AGNSS_TAIDOU_SEND_DATA      "all"
#endif

#define AGNSS_WAIT_SEND_MAX_TIME 	( 3000 )
#define AGNSS_WAIT_RECV_MAX_TIME 	( 3000 )

#define AGNDD_DATA_MAX_TIMESTAMP   60//(3600)// ( 7200 )// 为了测试方 暂时修改为10min 实际1小时
/*************************平台应答结果信息结构体**********************/
#define AGNSS_SERVER_DATA_LEN   8192

typedef enum
{
    AGNSS_SERVER_INIT = 0,      /*AGNSS 服务器数据为空*/
    AGNSS_SERVER_UPDATA,        /*AGNSS 服务器数据已经更新*/
    AGNSS_SERVER_READ,          /*AGNSS 服务器数据已经被读取*/
    AGNSS_SERVER_FINSH,         /*AGNSS 服务器数据注入成功*/
    AGNSS_SERVER_ERR,
}agnss_data_type_e;

typedef struct
{
	volatile agnss_data_type_e type;
    volatile uint32_t run_timestamp;
    volatile uint32_t sleep_timestamp;
    volatile uint32_t again_timestamp;
    volatile uint32_t couter;
    volatile uint32_t len;
    volatile uint8_t *buf;
} agnss_server_data_t;

extern agnss_server_data_t agnss_server_data;

typedef enum
{
    AGNSS_RUN_TIMESTAMP = 0,      /*AGNSS 休眠时的时间戳*/
    AGNSS_SLEEP_TIMESTAMP,        /*AGNSS 运行时的时间戳*/
}agnss_timestamp_type_e;


typedef enum
{
    AGNSS_LOC_INIT = 0,          /*AGNSS 定位初始化*/
    AGNSS_LOC_DATA_SUC,          /*AGNSS 定位数据获取成功*/
    AGNSS_LOC_DATA_ERR,          /*AGNSS 定位数据获取失败*/
    AGNSS_LOC_SET_SUC,           /*AGNSS 定位数据设置成功*/
}agnss_location_type_e;

/** ****************************************************************************
* @remarks       void agnss_data_create_task( unsigned portBASE_TYPE uxPriority )
* @brief         创建AGNSS基层数据管理任务
* @param[in]     uxPriority任务优先级；
* @param[out]    无
* @return        无
* @attention     在系统启动后进行创建
*******************************************************************************/
extern void agnss_data_create_task( unsigned portBASE_TYPE uxPriority );

/** ****************************************************************************
* @remarks       uint32_t agnss_ephemeris_data_set( void )
* @brief         AGNSS 通过串口发送星历数据
* @param[in]     无
* @param[out]    无
* @return        pdPASS 设置成功  pdFAIL 设置失败
* @attention     无
*******************************************************************************/
extern uint32_t agnss_ephemeris_data_set( void );

/** ****************************************************************************
* @remarks       uint32_t agnss_data_timestamp_set( void )
* @brief         AGNSS 设置 星历的时间戳
* @param[in]     mode 设置模式 
* @param[out]    无
* @return        无
* @attention     无
*******************************************************************************/
extern void agnss_data_timestamp_set( agnss_timestamp_type_e mode );

/** ****************************************************************************
* @remarks       agnss_location_type_e agnss_location_st_get( void )
* @brief         AGNSS 定位状态获取
* @param[in]     无
* @param[out]    无
* @return        返回AGNSS 辅助定位的状态
* @attention     无
*******************************************************************************/
extern agnss_location_type_e agnss_location_st_get( void );

#endif

